//@author A0080384E

/*LogicReply is a class which is used to return information from Logic to UI. It contains a vector<task>
which could store the tasks to be displayed, a feedback string which is to be displayed in the prompt bar,
a SignalType object which signals to UI if there is any other function required to be called ype 
a DisplayType object which signals to UI what type of tasks are to be displayed
*/

#ifndef LOGICREPLY_H
#define LOGICREPLY_H

#include "storage.h"
#include "TaskManager.h"
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
#include <stdio.h>
#include <iterator>
#include <vector>
#include <cstdlib>
#include <stdlib.h>

class LogicReply{
public:
	enum SignalType {
        CALL_SEARCH_DELETE, CALL_SEARCH_MODIFY, CALL_SEARCH_COMPLETE,CALL_MODIFY, CALL_DELETE, CALL_DISPLAY, CALL_COMPLETE, CALL_SEARCH, NONE,
	};
    enum DisplayType {
        DISPLAY_FLOAT, DISPLAY_DEADLINE, DISPLAY_MEETING, DISPLAY_DATE, DISPLAY_ALL, DISPLAY_URGENT, DISPLAY_OVERDUE, DISPLAY_NONE, DISPLAY_INVALID
    };

private:
	QVector<Task> taskList;
	QString feedback;
	SignalType signalType;
    DisplayType displayType;

public:
	//getters
	QVector<Task> getTaskList () const;
	QString getFeedback() const;
	SignalType getSignalType() const;
    DisplayType getDisplayType() const;
	//setters
	void setTaskList(QVector<Task> setTask);
	void setFeedback(QString setFeedback);
	void setSignalType(SignalType);
    void setDisplayType(DisplayType);
};
#endif
 
